/*
Date:20210522 16:49
key:1-26对应a-z，非常恶心。将z认为是mod=0，然后到z要最后-1
*/
class Solution {
public:
    char cton1(int n)
    {
        return (char)(n+64);
    }
    template<typename Q>
    void swap(Q&q1,Q&q2)
    {
        Q tmp=move(q1);
        q1=q2;
        q2=tmp;
    }
    string convertToTitle(int columnNumber) 
    {
        string res;
        while (columnNumber > 0)
        {   
            if(columnNumber% 26 == 0)
            {
                res += 'Z'; 
                //26的倍数都是特殊情况。比如26 应该是z，26/26=1，变成ZA了，因此除完要-1
                columnNumber = columnNumber/26 -1; //columnNumber 赋值为-1，结束循环；
            }
            else{
                res += cton1(columnNumber % 26 );
                //static_cast<char>相当于c语言的强转#（char），不懂的可以自行百度c++11 四种类型转换
                columnNumber = columnNumber/26;
            }
        }


        int i=0;
        int j=res.size()-1;
        while(i<j)
        {
            swap(res[i],res[j]);
            i++;j--;
        }
        return res;
    }
};